基于TPNN的儿童英语声学模型训练
前言
本文将从TPNN的“多卡训练技术” “声学模型训练” “移动端的模型优化”这几个方面为大家介绍学而思网校的儿童声学模型训练技术。
一、TPNN的多卡加速技术
TPNN拥有在NVidia的NCCL通信框架基础上,利用BMUF技术,搭建了一套高效率的多卡加速框架。
二、数据同步并行框架
Figure1 数据同步并行的基本架构
数据同比并行是指对训练数据做切分,同时采用多个模型实例,对多个分片的数据并行训练,并在定期时间内将多个模型的梯度同步到parameter server进行求和平均,在分发到各路子模型。
这里同步的时机可以采用一个batch内的拆分同步,这样可以基本可以模拟单路的训练过程,但这种方法有两个缺点,就是当batch比较小时,多路gpu之间的同步开销将会很大,所以这种方法通常需要加大batch重新超参数进行训练,为此TPNN的多卡同步才用的是N个batch同步策略,具体训练过程中我们可以调整N达到最大的性能和速度之间的平衡。图二显示了我们采用这种训练方式的数据组织方法,我们将数据拆分成M*N个块,其中N为并行gpu的数量,M为数据同步的block频率,每个block包含n个batch的数据。Figure2 数据训练集的拆分结构
TPNN的底层数据通信采用基于NCCL的方案,NCCL核心提供了gpu层面的all-reduce算法,这项技术也帮助我们实现了gpu在训练过程中进行频繁数据交换的可行性。
同时NCCL本身也提供了跨机通信能力,多机间通过Sockets (Ethernet)或者InfiniBand with GPU Direct RDMA通信。这对于我们可以较为轻松的将单机多卡技术进一步扩展到多机多卡技术。Figure3 NCCL all-reduce通信技术
三、BMUF算法
(Blockwise Model-Update Filtering)
针对MA的缺点,论文[2]提出了一种基于块冲量的全局更新算法(Blockwise Model-Update Filtering,BMUF),利用每一层block增加的冲量梯度更新,可以维持梯度更新量不会发生损失,详细的证明有兴趣可以参见一下论文。
TPNN正是结合底层NCCL技术和BMUF算法,打造了高效、高性能的训练算法框架,我们在此基础上完成了上万小时的大规模儿童数据训练,利用四张卡并行,我们可以达到3.6倍的加速比,在三天左右即可完成上万小时以上的LSTM模型声学迭代。
四、基于LSTM-CTC技术的儿童声学模型训练
深度学习模型在数据特征学习领域的地位越来越无可替代,目前比较典型的神经网络主要有:DNN、CNN、RNN、LSTM、TDNN、FSMN等,其中DNN和CNN网络结构属于静态分类网络,尤其CNN(convolution neural networks,卷积神经网络),能够非常好地学习到具有空间关系的数据特征,如图像的识别与分类。
Figure4 CNN网络结构
而时序数据是一种时序关系非常重要的变长输入序列,因此动态分类网络将更适合于时序数据的学习,RNN(recurrent neural networks,循环神经网络)、LSTM(Long Short-Term Memory)正是处理这种时序关系非常有效的动态网络结构。
Figure5 RNN网络时间展开图
RNN的时间展开图如上图所示,在进行误差反向传播(error backpropagation)时,当我们已知损失函数对时刻隐状态向量的偏导数时,根据链式法则,我们计算损失函数对时刻隐状态向量的偏导数。
当t很大时,该偏导数取决于矩阵Whh的最大的奇异值是大于1还是小于1,要么结果太大,要么结果太小,对应的训练结果则是梯度的爆炸或消失。
Figure6 rnn梯度爆炸
基于RNN的不足,LSTM网络通过引入3个门电路对长短期的时序数据进行选择性的遗忘、记忆,其中黄色方框表示神经网络层,粉色圆圈表示点数据操作运算,其数学形式:
对应的网络结构如下图:
Figure7 LSTM模型结构
LSTM目前有很多变体,在我们的TPNN训练平台中,我们采用了当前最流行的一种变体,即加入了peephole connection,利用上一时刻的细胞记忆状态对忘记门和记忆门进行修正,利用当前的记忆状态对输出门进行修正,其peephole的修正公式及修正结构如下图所示:
Figure8 LSTM with peephole
Figure9 CTC blank 尖峰
CTC准则的序列化映射数学表现形式为:
Figure10 ctc loss的路径概率计算
递推公式的前面变量为:
反向传播与前向类似,不再介绍,由于前后向计算均涉及大量概率计算,因此在计算时需要对其做取对数处理,将乘法转化为加法,不仅可以避免underflow问题,还可简化计算。
CTC损失函数的计算公式:
在儿童真实线上数据集上,我们的模型的表现性能达到了92.48%的识别精度。
五、移动端声学模型优化
由于移动端资源的限制,大部分深度学习引擎都部署在云端,移动设备获取到输入数据,经过简单的加工,发送给云端,云端服务器经过深度神经网络推断运算,得到结果并反馈给移动端,完成整个过程。
显而易见,这种交互方式有很多弊端,比如依赖网络,流量过大,延迟太长,更重要的是,云端服务器必须有足够大的并行计算能力,如果移动端请求量太大,超过负荷,容易导致服务器宕机,特别是在儿童教育场景模式下,存在很多瞬时并发非常高的业务场景,这个时候,一旦服务器算力不够,将会造成非常不好的教学体验。因此,将语音识别能力部署到移动设备上,是满足当下儿童业务场景的一项必须的工作。然而,成功将深度学习引擎部署到移动端并非易事。运行速度,内存占用,各类机型覆盖,都是必须逾越的障碍。接下来我们将介绍我们是如何将儿童声学模型成功应用到手机上的,其中包括了模型压缩,定点化,解码加速,neon计算优化以及混合精度计算优化等技术。1、模型裁剪和压缩
Figure11 LSTM with projection layer结构
2、模型的8bit量化
由于移动平台的浮点计算能力相对较弱,我们在对模型进行了定点化压缩,将权重压缩到8bit进行存储,存储大小缩小为原来的四分之一,并同时实现了LSTM模型8bit计算推理,通过在arm平台的深度定制优化,我们的声学模型在牺牲少量性能的情况下达到服务器的计算速度。
3、低精度矩阵的计算优化
我们在定点化的时候输出矩阵采用转置输出,这样两个矩阵在运算的时候可以进行连续的内存访问,提高cache的访问效率。
Figure12 低精度矩阵计算优化
除了通用的矩阵的矩阵运算结构,我们还针对LSTM的计算特性,对特殊的矩阵运算结构,比如Matrix*vector进行了定制优化。
4、混合精度计算
Figure14 计算实时率优化曲线
参考文献
[1]Asynchronous stochastic optimization for sequence training of deep neural networks.
[2]Scalable Training of Deep Learning Machines by Incremental Block Training with Intra-block Parallel Optimization and Blockwise Model-Update Filtering.
[3]Long Short-Term Memory Recurrent Neural Network Architectures for Large Scale Acoustic Modeling.
[4]Connectionist Temporal Classification: Labelling Unsegmented Sequence Data with Recurrent Neural Networks.
作者简介
唐凯、孟凡昌老师,均为好未来学而思网校事业部智能研发部高级数据算法工程师
END
招聘信息
好未来技术团队正在热招视觉/图像算法、后台开发、运维开发、后端开发Golang、web前端开发等高级工程师岗位,大家可点击本公众号“技术招聘”栏目了解详情,欢迎感兴趣的伙伴加入我们!
也许你还想看重磅总结|9大技术方向,30+篇好文!2019好未来技术合辑新鲜出炉!前端组件化-高质高效协作利器纪实|我是一名程序员,我用代码为你守候